import { Entity, Column, PrimaryGeneratedColumn, CreateDateColumn } from 'typeorm';
import { hashSync } from 'bcrypt'; // 用于加密存储 API Secret

@Entity()
export class ApiKey {
  @PrimaryGeneratedColumn('uuid')
  id: string;

  @Column({ unique: true })
  apiKey: string; // 公开的 API Key（如 AKIA123456）

  @Column()
  apiSecretHash: string; // 加密后的 API Secret（不存储明文）

  @Column('jsonb')
  allowedModules: string[]; // 允许访问的模块列表

  @Column({ default: 1000 })
  totalQuota: number; // 总资源限额

  @Column({ default: 0 })
  usedQuota: number; // 已使用次数

  @Column({ type: 'timestamp', nullable: true })
  expiresAt: Date; // 过期时间

  @CreateDateColumn()
  createdAt: Date;

  // 加密 API Secret（存储时调用）
  setApiSecret(secret: string) {
    this.apiSecretHash = hashSync(secret, 10); // 加盐哈希
  }
}